"""
--------------------------------------------------------
@File             : protocolGateConst.py
@Creat Time       : 2020-06-17 21:10:15
@Author           : Catch
@Site             :
@Software         : PyCharm
@file Conent      : 常量类定义，用于python中定义常量
--------------------------------------------------------
@Revise history   :
@Version          : V12
@Amendant records :
     1)Catch  2020-06-10  创造了类定义；
     2)Catch  2020-07-07  增加了文件头部注释；
--------------------------------------------------------
"""


"""
--------------------------------------------------------
@类名称：Const
@功能：
    1）在python开发环境中定义常量；
@参数：
    1）无

@说明：
    1）const.xx,定义常量，避免重复赋值
--------------------------------------------------------
@Revise history   :
@Version          : V12
@Amendant records :
     1)Catch  2020-06-30  增加了函数头部新注释内容
     2)Catch  2020-06-30  增加了类说明
--------------------------------------------------------
"""
class Const():
    class ConstError(TypeError): pass
    class ConstCaseError(ConstError): pass
    # 写属性值的时候，调用此函数
    def __setattr__(self, key, value):

        if key in self.__dict__.keys():
            # 存在性验证
            raise self.ConstError("Can't change a const variable: '%s'" % key)

        if not key.isupper():
            # 语法规范验证
            raise self.ConstCaseError("Const variable must be combined with upper letters:'%s'" % key)

        self.__dict__[key] = value
